package cn.iocoder.yudao.module.resource.service.download;

import cn.iocoder.yudao.module.resource.dal.dataobject.download.ResourceDownloadDO;

import javax.validation.Valid;
import java.util.List;

/**
 * 下载记录 Service 接口
 *
 * @author 芋道源码
 */
public interface ResourceDownloadService {

    /**
     * 创建下载记录
     *
     * @param downloadDO 下载信息
     * @return 下载记录ID
     */
    Long createDownload(@Valid ResourceDownloadDO downloadDO);

    /**
     * 获得下载记录
     *
     * @param id 下载记录ID
     * @return 下载记录
     */
    ResourceDownloadDO getDownload(Long id);

    /**
     * 根据用户ID和素材ID获得下载记录
     *
     * @param userId 用户ID
     * @param materialId 素材ID
     * @return 下载记录
     */
    ResourceDownloadDO getDownloadByUserIdAndMaterialId(Long userId, Long materialId);

    /**
     * 根据用户ID获得下载列表
     *
     * @param userId 用户ID
     * @return 下载列表
     */
    List<ResourceDownloadDO> getDownloadListByUserId(Long userId);

    /**
     * 检查用户是否已下载素材
     *
     * @param userId 用户ID
     * @param materialId 素材ID
     * @return 是否已下载
     */
    boolean hasDownloaded(Long userId, Long materialId);

}
